import request from "@/utils/request";

// 获得表定义分页
export function getCodegenTablePage(query) {
  return request({
    url: "/infra/codegen/table/page",
    method: "get",
    params: query,
  });
}

// 获得表和字段的明细
export function getCodegenDetail(tableId) {
  return request({
    url: "/infra/codegen/detail?tableId=" + tableId,
    method: "get",
  });
}

// 修改代码生成信息
export function updateCodegen(data) {
  return request({
    url: "/infra/codegen/update",
    method: "put",
    data: data,
  });
}

// 基于数据库的表结构，同步数据库的表和字段定义
export function syncCodegenFromDB(tableId) {
  return request({
    url: "/infra/codegen/sync-from-db?tableId=" + tableId,
    method: "put",
  });
}

// 基于 SQL 建表语句，同步数据库的表和字段定义
export function syncCodegenFromSQL(tableId, sql) {
  return request({
    url: "/infra/codegen/sync-from-sql?tableId=" + tableId,
    method: "put",
    headers: {
      "Content-type": "application/x-www-form-urlencoded",
    },
    data: "tableId=" + tableId + "&sql=" + sql,
  });
}

// 预览生成代码
export function previewCodegen(tableId) {
  return request({
    url: "/infra/codegen/preview?tableId=" + tableId,
    method: "get",
  });
}

// 下载生成代码
export function downloadCodegen(tableId) {
  return request({
    url: "/infra/codegen/download?tableId=" + tableId,
    method: "get",
    responseType: "blob",
  });
}

// 获得表定义分页
export function getSchemaTableList(query) {
  return request({
    url: "/infra/codegen/db/table/list",
    method: "get",
    params: query,
  });
}

// 基于数据库的表结构，创建代码生成器的表定义
export function createCodegenListFromDB(tableNames) {
  return request({
    url: "/infra/codegen/create-list-from-db",
    method: "post",
    headers: {
      "Content-type": "application/x-www-form-urlencoded",
    },
    data: "tableNames=" + tableNames,
  });
}

// 基于 SQL 建表语句，创建代码生成器的表定义
export function createCodegenListFromSQL(data) {
  return request({
    url: "/infra/codegen/create-list-from-sql",
    method: "post",
    headers: {
      "Content-type": "application/x-www-form-urlencoded",
    },
    data: "sql=" + data.sql,
  });
}

// 删除数据库的表和字段定义
export function deleteCodegen(tableId) {
  return request({
    url: "/infra/codegen/delete?tableId=" + tableId,
    method: "delete",
  });
}
